package com.hjl.dao.user;
import com.hjl.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserMapper{

    /**
     *  查询用户列表
     */
    public List<User> getUserList();

    /**
     *  查询记录数
     *  方法名要和映射id一样
     * @return
     */
    public int count();

    /**
     *  根据用户名名称查询用户列表
     */
    public List<User> getUserListByUserName(User user);

    /**
     *  查询用户列表
     */
    public List<User> getUserListByMap(Map<String, String> userMap);

    public List<User> getUserList1(User user);

    /**
     *  增加用户
     * @param user
     * @return
     */
    public int add(User user);


    /**
     *
     * @param user
     * @return
     */
    public int modify(User user);


    /**
     *  修改用户密码
     * @return
     */
    public int updatePwd(@Param("id") Integer id, @Param("userPassword") String pwd);

    /**
     *  根据 userId 删除用户信息
     * @param delId
     * @return
     */
    public int deleteUserById(@Param("id") Integer delId);

    public List<User> getUserListByRoleId(@Param("userRole") Integer roleId);

    public List<User> getAddressListByUserId(@Param("id") Integer userId);

    /**
     *  配合角色表查询信息
     * @param userRole
     * @return
     */
    public int getListInfoByIdCount(@Param("userRole")Integer userRole);

    /**
     *  删除指定用户信息
     * @param userRole
     * @return
     */
    public int deleteInfoById(@Param("userRole")Integer userRole);

    /**
     *  使用动态SQL查询用户列表
     * @return
     */
    public List<User> getUserListByNameRole(@Param("userName")String userName,@Param("userRole")Integer reoleId);


    /**
     *  根据用户角色列表，获取该角色列表下用户列表信息
     * @param roleIds
     * @return
     */
    public List<User> getUserByRoleId_foreach_array(Integer[]roleIds);


    /**
     *  根据用户角色列表，获取该角色列表下用户列表信息
     * @param roleList
     * @return
     */
    public List<User> getUserByRoleId_foreach_list(List<Integer> roleList);


    /**
     *  根据用户角色列表和性别（多参数），获取该角色列表下制定性别的用户列表信息—foreach_map
     * @param conditionMap
     * @return
     */
    public List<User> getUserByConditionMap_foreach_map(Map<String,Object> conditionMap);


    /**
     *  根据用户角色列表，获取该角色列表下用户列表信息—foreach_map(单参数封装成map)
     * @param roleMap
     * @return
     */
    public List<User> getUserByRoleId_foreach_map(Map<String,Object> roleMap);


    /**
     *  查询用户列表(choose)
     * @param userName
     * @param roleId
     * @param userCode
     * @param creationDate
     * @return
     */
    public List<User> getUserList_choose(@Param("userName")String userName, @Param("userRole")Integer roleId,
                                         @Param("userCode")String userCode, @Param("creationDate")Date creationDate);


    /**
     *  查询用户记录表数
     * @return
     */
    public int countInfo();

    /**
     *  查询用户列表（分页显示）
     * @param userName
     * @param roleId
     * @param currentPageNo
     * @param pageSize
     * @return
     */
    public List<User> getUserListInfo(@Param("userName")String userName,@Param("userRole")Integer roleId,
                                      @Param("from")Integer currentPageNo,@Param("pageSize")Integer pageSize);

}